import java.util.Arrays;

public class NM {
    //计数排序；
    //1.首先进行找到关于要排序数组的最大值与最小值；
    //进而来确定计数数组的长度；
    //2.进行计数；
    //通过要排序的数组和计数数组进行计数操作；
    //3.进行将要排序的数组通过计数数组进行计数操作；
    public static void fun(int[] array){
        int maxVal=array[0];
        int minVal=array[0];
        for(int i=1;i< array.length;i++){
            if(array[i]<minVal){
                minVal=array[i];
            }
            if(array[i]>maxVal){
                maxVal=array[i];
            }
        }
        int[] count=new int[maxVal-minVal+1];
        //进行计数操作；
        for(int i=0;i< array.length;i++){
            int index=array[i];
            count[index-minVal]++;
        }
        //进行排序操作；
        int index=0;
        for(int i=0;i< count.length;i++){
            while(count[i]!=0){
                array[index]=i+minVal;
                index++;
                count[i]--;
            }
        }
    }
    public static void main(String[] args){
        int[] array={10,11,12,12,12,11,11,11,11,13,14,15,13,13};
        fun(array);
        System.out.println(Arrays.toString(array));
    }
}
